package site.addzero.app

import graavlvm_download.SoftCenter
import kotlinx.coroutines.runBlocking
import org.koin.core.context.startKoin
import site.addzero.cli.autoinit.common.AutoInitGraavlvm
import site.addzero.cli.setting.SettingContext
import org.koin.ksp.generated.defaultModule
import site.addzero.util.KoinInjector.injectList
import site.addzero.task.InitTask
import site.addzero.task.taskStatusService

fun main() = runBlocking {
    // 启动Koin并加载模块
    val startKoin = startKoin {
        modules(defaultModule)
    }

    // 初始化任务状态服务
    taskStatusService.initStatusDir()
    taskStatusService.loadTaskStatus()

    // 获取所有初始化任务并执行
    val initTasks = injectList<InitTask>()
    initTasks.filter { it.support }.forEach { task ->
        try {
            task.executeWithStatus()
        } catch (e: Exception) {
            e.printStackTrace()
            println("执行初始化任务时出错: ${e.message}")
        }
    }

    // 启动REPL模式
    val repls = injectList<AdvancedRepl<*, *>>()
    repls.startReplMode()
}
